const ws = require('nodejs-websocket');

const PORT = 3000;
const IP = 'localhost';
const TYPE_ENTER =0;
const TYPE_LEAVE =1;
const TYPE_MSG =2;
let count = 0;



// 创建一个服务器，当服务器监听到有连接过来时会触发一个回调函数，并传递参数形参为connect
// 前端后传输数据使用json格式字符串，，后端传递一个json对象，有三个属性，分别为
// type、msg、time
const server = ws.createServer( (connect) => {
    count++;
    connect.username = `用户${count}`;
    //1、广播某个用户进入聊天室
    broadcast({
        type:TYPE_ENTER,
        msg: `${connect.username}进来啦`,
        time:new Date().toLocaleTimeString(),
    });
    //2、广播某个用户说的话
    connect.on('text',(str) => {
            //广播消息给其他连接
            broadcast({
                type:TYPE_MSG,
                msg:`${connect.username}说:${str}`,
                time: new Date().toLocaleTimeString(),
            });
    })

    //3、广播某个用户退出聊天室
    connect.on('close',() => {
        //count--;
        broadcast({
            type:TYPE_LEAVE,
            msg:`${connect.username}退出了聊天室`,
            time: new Date().toLocaleTimeString(),
        });
    })

    //4、出错时触发
    connect.on('error',() => {
        console.log("error!!!");
    })

});



server.listen(PORT,IP,() => {
    console.log('服务器启动成功,开始监听');
})


function broadcast(msg) {
    server.connections.forEach(connections => {
        connections.sendText(JSON.stringify(msg));
    });
}






    

